package com.csea.app.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.csea.app.model.vo.idiom.*;
import com.csea.common.domain.dos.UserIdiomDo;
import com.csea.common.utils.Response;

import java.util.List;
/**
 * 用户成语服务接口
 *
 * @author csea
 */
public interface UserIdiomService extends IService<UserIdiomDo> {
    /**
     * 保存用户成语
     *
     * @param reqVO 成语请求
     * @return 保存结果
     */
    Response<Boolean> saveUserIdiom(AddUserIdiomReqVO reqVO);
    /**
     * 根据ID获取用户成语
     *
     * @param idiomId 成语ID
     * @return 成语响应
     */
    Response<UserIdiomRspVO> getUserIdiomById(Integer idiomId);
    /**
     * 更新用户成语基本信息
     *
     * @param reqVO 成语更新
     * @return 更新结果
     * */
    Response<Boolean> updateUserIdiomBaseInfo(UpdateUserIdiomBaseInfoReqVO reqVO);
    /**
     * 根据ID删除用户成语
     *
     * @param idiomId 成语ID
     * @return 删除结果
     */
    Response<Boolean> deleteUserIdiom(Integer idiomId);
    /**
     * 根据仓库ID获取用户成语列表
     *
     * @param repositoryId 仓库ID
     * @return 成语列表
     */
    Response<List<UserIdiomRspVO>> listByRepository(Integer repositoryId);

    /**
     * 更新用户成语操作信息
     *
     * @param reqVO 成语更新
     * @return 更新结果
     * */
    Response<Boolean> updateOperateInfo(UpdateUserIdiomOperateInfoReqVO reqVO);

    /**
     * 根据关键词搜索成语
     * @param keyword 关键词
     * @return 成语列表
     */
    Response<List<UserIdiomRspVO>> searchIdiomsByKeyword(String keyword);

    /**
     * 扣子搜索成语
     * @return 成语列表
     */
    Response<List<UserIdiomRspVO>> searchIdiomByCoze(String keyword);

    /**
     * 获取用户卡片统计信息
     * @return 卡片统计信息
     */
    Response<UserCardStatsRspVO> getUserCardStats();
}